package com.ruoyi.member.service;

import java.util.List;
import java.util.Map;

import com.alibaba.fastjson.JSONObject;
import com.ruoyi.db.domain.MemberExtInfo;
import com.ruoyi.db.model.param.MemberExtInfoParam;
import com.ruoyi.db.model.vo.DataInfoVO;

/**
 * 用户扩展信息Service接口
 * 
 * @author ruoyi
 * @date 2022-08-02
 */
public interface IMemberExtInfoService 
{
    /**
     * 查询用户扩展信息
     * 
     * @param uid 用户扩展信息主键
     * @return 用户扩展信息
     */
    public MemberExtInfo selectMemberExtInfoByUid(Long uid);

    /**
     * 查询用户扩展信息列表
     * 
     * @param memberExtInfo 用户扩展信息
     * @return 用户扩展信息集合
     */
    public List<MemberExtInfo> selectMemberExtInfoList(MemberExtInfo memberExtInfo);

    /**
     * 查询用户扩展信息列表
     *
     * @param memberExtInfo 用户扩展信息
     * @return 用户扩展信息集合
     */
    public List<Map<String, Object>> selectMemberExtInfoListMap(MemberExtInfoParam memberExtInfo);


    /**
     * 新增用户扩展信息
     * 
     * @param memberExtInfo 用户扩展信息
     * @return 结果
     */
    public int insertMemberExtInfo(MemberExtInfo memberExtInfo);

    /**
     * 修改用户扩展信息
     * 
     * @param memberExtInfo 用户扩展信息
     * @return 结果
     */
    public int updateMemberExtInfo(MemberExtInfo memberExtInfo);

    /**
     * 批量删除用户扩展信息
     * 
     * @param uids 需要删除的用户扩展信息主键集合
     * @return 结果
     */
    public int deleteMemberExtInfoByUids(String uids);

    List<DataInfoVO> getZhimaCountInfoByDateInfoAndChannelCode(String dateInfo, String channelCode);

    List<DataInfoVO> getAuthCountInfoByDateInfoAndChannelCode(String dateInfo, String channelCode);

    DataInfoVO getAgeCountInfoByDateInfoAndChannelCode(String dateInfo, String channelCode, Integer min, Integer max);

    List<Map<String, Object>> getCityCountInfoByDateInfoAndChannelCode(String dateInfo, String channelCode);

    Long getCountNumberByCountInfo(String dateInfo, String channelCode);

    JSONObject getMapProvinceDataList(String startDate, String endDate);

    JSONObject getMapCityDataList(String startDate, String endDate, String provinceCode);

    JSONObject chartMap100CityData(String startDate, String endDate);

    Long selectCountByDatetime(String starttime, String endtime);
}
